From: Marco Trevisan (TreviƱo) Date: Fri, 20 Mar 2020 19:06:55 +0000 (+0100) Subject: telepathyClient: Use GObjects based message objects X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~751^2^2~60 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=766288eec1bd3bd50dfc4ddf410c2b507187e603;p=gnome-shell.git telepathyClient: Use GObjects based message objects As per commit b5676a2a5 ChatNotification is a GObject, but I was wrongly considering that it was using Tp.Message's as children, instead it just uses custom-built objects to pass information around through signals. Given gjs can only use GObjects as signal parameters, create a small wrapper class to hold the ChatNotification messages and use it as signal parameter. Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2449 https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1112 --- diff --git a/js/ui/components/telepathyClient.js b/js/ui/components/telepathyClient.js index e6ae34042..cdb7f57f5 100644 --- a/js/ui/components/telepathyClient.js +++ b/js/ui/components/telepathyClient.js @@ -2,7 +2,6 @@ /* exported Component */ const { Clutter, Gio, GLib, GObject, St } = imports.gi; -const Lang = imports.lang; var Tpl = null; var Tp = null; @@ -630,11 +629,19 @@ class ChatSource extends MessageTray.Source { } }) : null; +const ChatNotificationMessage = HAVE_TP ? GObject.registerClass( +class ChatNotificationMessage extends GObject.Object { + _init(props = {}) { + super._init(); + this.set(props); + } +}) : null; + var ChatNotification = HAVE_TP ? GObject.registerClass({ Signals: { - 'message-removed': { param_types: [Tp.Message.$gtype] }, - 'message-added': { param_types: [Tp.Message.$gtype] }, - 'timestamp-changed': { param_types: [Tp.Message.$gtype] }, + 'message-removed': { param_types: [ChatNotificationMessage.$gtype] }, + 'message-added': { param_types: [ChatNotificationMessage.$gtype] }, + 'timestamp-changed': { param_types: [ChatNotificationMessage.$gtype] }, }, }, class ChatNotification extends MessageTray.Notification { _init(source) { @@ -735,21 +742,24 @@ var ChatNotification = HAVE_TP ? GObject.registerClass({ styles: [], timestamp: currentTime, noTimestamp: false }); + const { noTimestamp } = props; + delete props.noTimestamp; // Reset the old message timeout if (this._timestampTimeoutId) GLib.source_remove(this._timestampTimeoutId); this._timestampTimeoutId = 0; - let message = { realMessage: props.group != 'meta', - showTimestamp: false }; - Lang.copyProperties(props, message); - delete message.noTimestamp; + let message = new ChatNotificationMessage({ + realMessage: props.group !== 'meta', + showTimestamp: false, + ...props, + }); this.messages.unshift(message); this.emit('message-added', message); - if (!props.noTimestamp) { + if (!noTimestamp) { let timestamp = props.timestamp; if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) { this.appendTimestamp();